﻿#define _CRT_SECURE_NO_WARNINGS

#pragma execution_character_set("utf-8")

// Vs studio 说 strcpy 不安全 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "struct.h"

#include "enclosure.h"

#include "function.h"

/*

主函数开始运行后， 首先进行初始化

init();

随后进入一个无限的Loop，每次读入一行命令

对于每个命令，记录操作名，以及所有的参数名和参数

结果存在Opera 和 ref 中

*/

void Program_loop();

char flash[100];

int i = 0;

int main() {

	Init();

	while (Loop) {

		Program_loop();

	}

	Quit();

}

void Program_loop() {

	int Cancel = 0; //是否取消执行

	strcpy(Opera, ""); // 初始化：清空 Opera 和 ref 以便接收新的指令

	for (i = 0; i < 26; i++) {

		strcpy(ref[i], "");

	}

	printf("当前账户: %s\n",User);

	printf("功能列表:\n");

	List();//列出所有功能的列表

	printf("请输入您要执行的操作: \n");

	gets(Opera);

	Manual(); // 这个函数给出Opera对应功能函数的文档

	for (i = 0; i <= 10; i++) {

		printf("请输入第 %d 个参量 (回车表示无参量, -1 表示直接退出参量输入，-2 返回上一个参数的输入, -3 取消执行该指令): \n", i + 1);

		gets(ref[i]); //为了防止某些逆天一行输好多，我选择读一行

		if (strcmp(ref[i], "-1") == 0) { //退出

			printf("退出参量输入 \n");

			break;

		}

		if (strcmp(ref[i], "") == 0) {

			strcpy(ref[i], "");

			printf("该参量无值 \n");

		}

		if (strcmp(ref[i], "-2") == 0) {

			strcpy(ref[i], "");

			i -= 1;

			strcpy(ref[i], "");

			if (i >= 0) i -= 1;

			continue;

		}

		if (strcmp(ref[i], "-3") == 0) {

			Cancel = 1;

			break;

		}

		printf("您输入的第 %d 个参数是：%s \n", i + 1, ref[i]);

	}

	if(Cancel==0)Function_call();

	printf("输入回车以接收下一条指令 \n");

	gets(flash);

	if(Loop==1)Save();

	system("cls");

}